		\blindtext
		\FloatBarrier
		\subsection{Scenarios}
			\begin{table}[ht]
			\begin{tabular}{l|l}
				\hline
				Scenario name & bookAppointment \\
				\hline
				Participating actor instances & \underline{bob:User} \\
				\hline
				Flow of events &
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{enumerate}
				  \item Bob creates a new appointment. 
				  \item Bob sets the appointment subject to “Walk the dog.” 
				  \item Bob sets the date and time to June 26 2013, 12pm. 
				  \item Bob saves the appointment. 
				  \item Bob logs off.
				\end{enumerate}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
			\end{tabular}
			\caption{Scenario for booking an appointment}
			\end{table}
		
			\begin{table}[ht]
			\begin{tabular}{l|l}
				\hline
				Scenario name & editAppointment \\
				\hline
				Participating actor instances & \underline{bobine:User} \\
				\hline
				Flow of events &
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{enumerate}
				  \item Bobine, Bob's wife, logs onto the system. 
				  \item Bobine disagrees that Bob should walk the dog, so she opens the appointment “Walk the dog” for editing.
				  \item Bobine changes the date to June 7 2014.
				  \item Bobine saves changes. 
				  \item Bobine logs off.
				\end{enumerate}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
			\end{tabular}
			\caption{Scenario for editing an appointment}
			\end{table}
			\begin{table}[ht]
			\begin{tabular}{l|l}
				\hline
				Scenario name & deleteAppointment \\
				\hline
				Participating actor instances & \underline{bobby:User} \\
				\hline
				Flow of events &
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{enumerate}
				  \item Bobby, son of the family, logs onto the system.
				  \item Bobby sees the appointment “Walk the dog” and gets frustrated, because he’s already walked the dog this year.
				  \item Bobby deletes the appointment.
				  \item Bobby logs off in anger.
				\end{enumerate}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
			\end{tabular}
			\caption{Scenario for deleting an appointment}
			\end{table}
			\begin{table}[ht]
				\begin{tabular}{l|l}
					\hline
					Scenario name & createAccount \\
					\hline
					Participating actor instances & \underline{bo:User} \\
					\hline
					Flow of events &
					\begin{minipage}{4in}
					\vskip 2pt
					\begin{enumerate}
					  \item Bo, dog of the family, launches the Calendar website.
					  \item Bo has no account, so he opens the "Create New Account" formula.
					  \item Bo creates a new account with the user name "Dog" and password "yesthisisdog".
					  \item Bo rejoices, because he's now allowed access to the system.
					\end{enumerate}
					\vskip 2pt
					\end{minipage}
					\\
					\hline
			\end{tabular}
			\caption{Scenario for creating an account}
			\end{table}
			\begin{table}[ht]
			\begin{tabular}{l|l}
				\hline
				Scenario name & shareCalendar \\
				\hline
				Participating actor instances & \underline{bobella:User} \\
				\hline
				Flow of events &
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{enumerate}
				  \item Bobella, au pair girl of the family, logs onto the system.
				  \item Bobella would like to share her calendar with her foreign boyfriend, so she opens her Calendar.
				  \item Bobella launches the "Share calendar" function and types in her boyfriend's e-mail address.
				  \item Bobella is happy.
				\end{enumerate}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
			\end{tabular}
			\caption{Scenario for sharing a calendar}
			\end{table}
		\FloatBarrier
		\subsection{Use case model}
		\blindtext
		\textbf{Use cases}
			\begin{itemize}
				\item FindAppointment
				\item BookAppointment
				\item EditAppointment
				\item DeleteAppointment
				\item CreateAccount
				\item ShareCalendar
				\item Login
				\item ShiftCalendarView
			\end{itemize}
			\begin{table}[ht]
			\begin{tabular}{l|l}
				\hline
				Use case name & FindAppointment \\
				\hline
				Participating actors & User \\
				\hline
				Flow of events & 
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{enumerate}
				  \item The User navigates through the Calendar with the navigation panel. \\
				  \textit{The navigation panel allows the user to navigate by week, month and year. All Appointments at the current view are shown graphically.}
				  \item The User selects an appropriate view and finds the Appointment on the list presented.
				\end{enumerate}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
				Entry condition & 
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{itemize}
				  \item The User is logged onto the system
				\end{itemize}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
				Exit condition &
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{itemize}
				  \item The appointment is highlighted
				\end{itemize}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
				Quality requirements &
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{itemize}
				  \item No quality requirements.
				\end{itemize}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
			\end{tabular}
			\caption{Use case for finding an appointment}
			\end{table}
			\begin{table}[ht]
			\begin{tabular}{l|l}
				\hline
				Use case name & BookAppointment \\
				\hline
				Participating actors & User \\
				\hline
				Flow of events & 
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{enumerate}
				  \item The User creates a new Appointment \\
				  \textit{The system shows a pop-up dialog in which the user can specify details.}
				  \item The User specifies appointment details and saves the Appointment. \\
				  \textit{the system stores the new appointment in its database, closes the dialog and responds to the user with a pop-up confirmation message}
				\end{enumerate}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
				Entry condition & 
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{itemize}
				  \item The User is logged onto the system
				\end{itemize}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
				Exit condition &
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{itemize}
				  \item The User receives a creation confirmation message from the system
				\end{itemize}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
				Quality requirements &
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{itemize}
				  \item The pop-up dialog and confirmation message must be shown within 5 seconds
				\end{itemize}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
			\end{tabular}
			\caption{Use case for booking an appointment}
			\end{table}
			\begin{table}[ht]
			\begin{tabular}{l|l}
				\hline
				Use case name & EditAppointment \\
				\hline
				Participating actors & User \\
				\hline
				Flow of events & 
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{enumerate}
				  \item The User opens the Appointment to edit. \\
				  \textit{the system shows a pop-up dialog in which the user can specify details.}
				  \item The User changes the Appointment details as desired and saves the Appointment. \\
				  \textit{the system stores the changes to the active Appointment in its database, closes the dialog and responds to the user with a pop-up confirmation message}
				\end{enumerate}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
				Entry condition & 
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{itemize}
				  \item The User is logged onto the system.
				  \item The Appointment to edit must exist.
				\end{itemize}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
				Exit condition &
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{itemize}
				  \item The User receives an edit confirmation message from the system.
				\end{itemize}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
				Quality requirements &
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{itemize}
				  \item The pop-up dialogs must be shown within 5 seconds
				\end{itemize}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
			\end{tabular}
			\caption{Use case for editing an appointment}
			\end{table}
			\begin{table}[ht]
			\begin{tabular}{l|l}
				\hline
				Use case name & DeleteAppointment \\
				\hline
				Participating actors & User \\
				\hline
				Flow of events & 
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{enumerate}
				  \item The User selects the Appointment to delete.
				  
				  \item The User deletes the Appointment \\
				  \textit{The system shows a yes/no confirmation dialog to the user. If the user confirms, the selected Appointment is deleted from the database and a delete confirmation pop-up dialog is shown to the user.}
				\end{enumerate}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
				Entry condition & 
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{itemize}
				  \item The User is logged onto the system.
				  \item The Appointment to delete must exist.
				\end{itemize}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
				Exit condition &
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{itemize}
				  \item The User receives a delete confirmation message from the system.
				\end{itemize}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
				Quality requirements &
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{itemize}
				  \item The confirmation dialog must be shown within 5 seconds
				\end{itemize}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
			\end{tabular}
			\caption{Use case for deleting an appointment}
			\end{table}
			\begin{table}[ht]
			\begin{tabular}{l|l}
				\hline
				Use case name & CreateAccount \\
				\hline
				Participating actors & User \\
				\hline
				Flow of events & 
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{enumerate}
					\item The User clicks the "Create New Account" button. \\
					\textit{The system will present a create new account form to the user.}
					\item The User enters wanted user name, password and e-mail address.
					\item The User confirms by closing the form. \\
					\textit{The system shows a confirmation dialog to the user. If the account creation is successful, the new user is stored in the database and a pop-up dialog is shown to the user.}
				\end{enumerate}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
				Entry condition & 
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{itemize}
					\item The User has launched the login form.
				\end{itemize}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
				Exit condition &
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{itemize}
					\item The User receives a accept confirmation message from the system.
				\end{itemize}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
				Quality requirements &
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{itemize}
					\item The create new account form and confirmation dialog must be shown 
					within 5 seconds
				\end{itemize}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
			\end{tabular}
			\caption{Use case for creating an account}
			\end{table}
			\begin{table}[ht]
			\begin{tabular}{l|l}
				\hline
				Use case name & ShareCalendar \\
				\hline
				Participating actors & User \\
				\hline
				Flow of events & 
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{enumerate}
					\item The User clicks "Share Calendar" with their main calendar active.
					\item The ShareCalendar form is shown.
					\item The User types the e-mail address of the person to share the calendar with. \\
					\textit{The system sends an e-mail address to the specified e-mail. The recipient must then log onto or register an account with that e-mail address to access the calendar.}
					\item The User confirms by closing the form. \\
					\textit{The system shows a confirmation dialog to the user. If the calendar share is successful, the new user is stored in the database and a pop-up dialog is shown to the user.}	
				\end{enumerate}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
				Entry condition & 
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{itemize}
					\item The User is logged onto the system.
				\end{itemize}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
				Exit condition &
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{itemize}
					\item The User receives a share confirmation message from the system.
				\end{itemize}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
				Quality requirements &
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{itemize}
					\item The share calender form and confirmation dialog must be shown within 5 seconds
				\end{itemize}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
			\end{tabular}
			\caption{Use case for sharing a calendar}
			\end{table}
			\begin{table}[ht]
			\begin{tabular}{l|l}
				\hline
				Use case name & Login \\
				\hline
				Participating actors & User \\
				\hline
				Flow of events & 
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{enumerate}
					\item The User enters username and password and press the ‘Login’ button. \\
					\textit{In case the user has entered a wrong username or password, the system will show a pop-up dialog. Else, the system will present the user account specified calendar view to the user, in which the user now can interact.}
				\end{enumerate}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
				Entry condition & 
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{itemize}
					\item The User is at the LoginForm view.
				\end{itemize}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
				Exit condition &
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{itemize}
					\item The User is logged in.
				\end{itemize}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
				Quality requirements &
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{itemize}
					\item The calendar must be shown within 5 seconds.
				\end{itemize}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
			\end{tabular}
			\caption{Use case for logging in to the UserAccount}
			\end{table}
			
			\begin{table}[ht]
			\begin{tabular}{l|l}
				\hline
				Use case name & ShiftCalendarView \\
				\hline
				Participating actors & User \\
				\hline
				Flow of events & 
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{enumerate}
					\item The User presses the ‘Shift Calendar View’ button. \\
					\textit{The system will present a drop down list of the possible Views.}
					\item The User clicks on the wanted calendar. \\
					\textit{The system will change the view to the new calendar view.}
				\end{enumerate}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
				Entry condition & 
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{itemize}
					\item The User is logged in and is at the calendar view.
				\end{itemize}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
				Exit condition &
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{itemize}
					\item 
					The User has changed the calendar view.
				\end{itemize}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
				Quality requirements &
				\begin{minipage}{4in}
				\vskip 2pt
				\begin{itemize}
					\item The change must be done within 5 seconds of the user choosing a view.
				\end{itemize}
				\vskip 2pt
				\end{minipage}
				\\
				\hline
			\end{tabular}
			\caption{Use case for changing the Calendar's View}
			\end{table}
			\FloatBarrier
		\subsection{\textit{Object model}}
		\FloatBarrier
			\textbf{Entity Objects}
				\begin{table}[ht]
				\begin{tabular}{l|l|p{3.5in}}
					\hline
					\tabletitlethree{Entity Object}{Attributes and associations}{Definition}
					\hline
					User &  & Any general user of the system. Controls and manages a UserAccount. \\
					\hline
					UserAccount &  
					\begin{minipage}{1.5in}
					\vskip 2pt
					\begin{itemize}
						\item Name
						\item Credentials (username, password, e-mail)
						\item Birth date
					\end{itemize}
					\vskip 2pt
					\end{minipage}
					 & The UserAccount can view, create, edit and delete Appointments through the Calendars that are shared with it. \\
					\hline
					Appointment & 
					\begin{minipage}{1.5in}
					\vskip 2pt
					\begin{itemize}
						\item Title
						\item Date \& Time
						\item Description
					\end{itemize}
					\vskip 2pt
					\end{minipage}
					 & An Appointment is an item of the Calendar. It contains information on date, time and description. \\
					\hline
					Calendar &  & The main container for all Appointment items. It should present a set of views. \\
					\hline
					Date &
					\begin{minipage}{1.5in}
					\vskip 2pt
					\begin{itemize}
						\item Day
						\item Week
						\item Year
						\item Time
					\end{itemize}
					\vskip 2pt
					\end{minipage}
					& The definition of date and time processed by the Calendar. \\
					\hline
					View &  & A graphical representation of one or more dates, including appointments \\
					\hline
					Database &  & The database that contains information on the appointments for each user. \\
					\hline
				\end{tabular}
				\caption{Table of entity objects}
				\end{table}
				\FloatBarrier
			\textbf{Boundary objects}
				\FloatBarrier
				\begin{table}[ht]
				\begin{tabular}{l|p{3.5in}}
					\hline
					\tabletitletwo{Boundary Object}{Definition}
					\hline
					AppointmentDialog & Form used by the User to edit or create a new appointment. \\
					\hline
					ConfirmationDialog & Dialog shown to the user that requires a Yes, No or Cancel response. \\
					\hline
					NavigationPanel & A panel that enables the user to change the current date and/or date range. \\
					\hline
					LoginForm & Form used by the User to log onto the system. \\
					\hline
					LoginButton & Button used by the User to initiate a LoginForm. \\
					\hline
					PopUpMessage & A pop-up message shown to the user. \\
					\hline
					CalendarView & The user interface for managing appointments. \\
					\hline
					BookAppointmentButton & Button used by the User to open an AppointmentDialog for booking an appointment. \\
					\hline
					DeleteAppointmentButton & Button used by the User to delete an Appointment object. \\
					\hline
					CreateNewAccountButton & Button used by the User initiate a CreateNewAccountForm \\
					\hline
					CreateNewAccountForm & Form used by the User to create a new account \\
					\hline
					ShareCalendarButton & Button used by the User to initiate a ShareCalendarForm \\
					\hline
					ShareCalendarForm & Form used by the User to share a Calendar with other Users. \\
					\hline
					ShiftCalendarViewButton & Button used to create a DropDownList that shows the different togglable CalendarView views. \\
					\hline
					DropDownList & A list that drops down with choices. \\
				\end{tabular}
				\caption{Table of boundary objects}
				\end{table}
			\FloatBarrier
			\textbf{Control objects}
			\FloatBarrier
				\begin{table}[ht]
				\begin{tabular}{l|p{4.5in}}
					\hline
					\tabletitletwo{Control Objects}{Definition}
					\hline
					 FindAppointmentControl &
					  Manages the FindAppointment function. This object is created when the user clicks the NavigationPanel to change the current calendar view. It then creates a new CalendarView object to substitute the current calendar view and displays it to the User.\\
					\hline
					 BookAppointmentControl & Manages the BookAppointment function. This object is created when when the user selects the ”Book appointment” button. It then creates the AppointmentDialog pop-up dialog and presents it to the User. After submitting the form, this object then collects the information from the form and creates an Appointment. The BookAppointmentControl object then creates a PopUpMessage object containing status information and displays it to the User. \\
					\hline
					 EditAppointmentControl & Manages the EditAppointment function. This object is created when the User opens the selected Appointment. The EditAppointmentControl object then creates an AppointmentDialog object and presents it to the User. When the User is done with the AppointmentDialog, and has viewed or changed the appointment details, this object saves the new details to the Appointment object. The EditAppointmentControl object then creates a PopUpMessage object containing status information and displays it to the User. \\
					\hline
					 DeleteAppointmentControl & Manages the DeleteAppointment function. This object is created when the User has selected an Appointment and clicks the “Delete Appointment” button. It then creates a PopUpMessage object containing confirmation text and displays it to the User. (If the User accepts?) \\
					\hline
					 CreateAccountControl & Manages the CreateAccount function. This object is created when the User clicks the “Create New Account” button. It then creates a CreateNewAccountForm object and displays it to the User. After the User has entered wanted username, password and e-mail address and confirmed the information, this object collects the information from the form and creates a UserAccount. BookAppointmentControl object then creates a PopUpMessage object containing status information and displays it to the User. \\
					\hline
					 ShareCalenderControl & Manages the ShareCalender function. This object is created when the User clicks the “Share Calendar” button. It then creates a ShareCalendar form object and presents it to the User. After submitting the form, this object will send a confirmation e-mail to the specified user. When the User closes the ShareCalender form, the ShareCalendarControl object will create a ConfirmationDialog and present it to the User. \\
					\hline
					 LoginControl & Manages the Login function. This object is created when the User clicks the ‘Login’ button. When pressed, the calendarSystem will verify the login details. In case the details did not match, the LoginControl object will create a PopUpMessage object and present it to the User. Else, the LoginControl object will create a CalendarView object and present it to the User.\\
					\hline
					 ShiftCalendarViewControl & Manages the ShiftCalendarView function. This object is created when the User clicks the ‘Shift Calendar View’. It then creates a DropDownList object containing the existing calendar available for the User, and presents it to the User. When the User has chosen a calendar, the ShiftCalendarViewControl object will create a new CalendarView object and present it to the User. \\
					\hline

				\end{tabular}
				\caption{Table of control objects}
				\end{table}
				\FloatBarrier
				\textbf{Class diagram}
				\begin{figure}[ht!]
				\centering
				\includegraphics{diagrams/classdiagrams/Classdiagram.png}
				\caption{Class diagram.}
				\end{figure}
				\FloatBarrier
		\FloatBarrier
		\subsection{\textit{Dynamic model}}
			\subsubsection{Sequence diagrams}
			\FloatBarrier
			\begin{figure}[ht!]
			\centering
			\includegraphics{diagrams/sequencediagrams/SequencediagramforBookAppointment.png}
			\caption{Sequence diagram for BookAppointment}
			\end{figure}
			\begin{figure}[ht!]
			\centering
			\includegraphics{diagrams/sequencediagrams/SequencediagramforCreateAccount.png}
			\caption{Sequence diagram for CreateAccount}
			\end{figure}
			\begin{figure}[ht!]
			\centering
			\includegraphics{diagrams/sequencediagrams/SequencediagramforDeleteAppointment.png}
			\caption{Sequence diagram for DeleteAppointment}
			\end{figure}
			\begin{figure}[ht!]
			\centering
			\includegraphics{diagrams/sequencediagrams/SequencediagramforEditAppointment.png}
			\caption{Sequence diagram for EditAppointment}
			\end{figure}
			\begin{figure}[ht!]
			\centering
			\includegraphics{diagrams/sequencediagrams/SequencediagramforFindAppointment.png}
			\caption{Sequence diagram for FindAppointment}
			\end{figure}
			\begin{figure}[ht!]
			\centering
			\includegraphics{diagrams/sequencediagrams/SequencediagramforLogin.png}
			\caption{Sequence diagram for Login}
			\end{figure}
			\begin{figure}[ht!]
			\centering
			\includegraphics{diagrams/sequencediagrams/SequencediagramforShareCalendar.png}
			\caption{Sequence diagram for ShareCalendar}
			\end{figure}
			\begin{figure}[ht!]
			\centering
			\includegraphics{diagrams/sequencediagrams/SequencediagramforShiftCalendarView.png}
			\caption{Sequence diagram for ShiftCalendarView}
			\end{figure}
		\FloatBarrier
		\subsubsection{State machine diagrams}
			\begin{figure}[ht!]
			\centering
			\includegraphics{diagrams/statemachinediagrams/StatemachinediagramCalendar.png}
			\caption{Calendar state machine diagram}
			\end{figure}
		\subsection{User interface---navigational paths and screen mock-ups}
			\blindtext